home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-03 / qbasicpg.zip / OUT_EX.BAS < prev    next >
BASIC Source File  |  1988-09-17  |  1KB  |  34 lines

  1. '*** OUT statement programming example
  2. '
  3. ' Play a scale using speaker and timer
  4. CONST WHOLE=5000!, QRTR=WHOLE/4.
  5. CONST C=523.0, D=587.33, E=659.26, F=698.46, G=783.99, A=880.00
  6. CONST B=987.77, C1=1046.50
  7. CALL Sounds(C,QRTR) : CALL Sounds(D,QRTR)
  8. CALL Sounds(E,QRTR) : CALL Sounds(F,QRTR)
  9. CALL Sounds(G,QRTR) : CALL Sounds(A,QRTR)
  10. CALL Sounds(B,QRTR) : CALL Sounds(C1,WHOLE)
  11.  
  12. SUB Sounds (Freq!,Length!) STATIC
  13. 'Ports 66, 67, and 97 control timer and speaker
  14. '
  15. 'Divide clock frequency by sound frequency
  16. 'to get number of "clicks" clock must produce
  17.     Clicks%=CINT(1193280!/Freq!)
  18.     LoByte%=Clicks% AND &H00FF
  19.     HiByte%=Clicks%\256
  20. 'Tell timer that data is coming
  21.     OUT 67,182
  22. 'Send count to timer
  23.     OUT 66,LoByte%
  24.     OUT 66,HiByte%
  25. 'Turn speaker on by setting bits 0 and 1 of PPI chip.
  26.     SpkrOn%=INP(97) OR &H03
  27.     OUT 97,SpkrOn%
  28. 'Leave speaker on
  29.     FOR I!=1 TO Length! : NEXT I!
  30. 'Turn speaker off.
  31.     SpkrOff%=INP(97) AND &HFC
  32.     OUT 97,SpkrOff%
  33. END SUB
  34.